home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1994-01-27 | 8.2 KB | 294 lines |
- IMPLEMENTATION MODULE AMSetUp;
-
- (* AMSetUp prepares the screen for the Automata program.
-
- Version 2.2d by Mike Dryja March 1, 1987 *)
-
- FROM SYSTEM IMPORT BYTE, ADR, NULL;
- FROM Storage IMPORT ALLOCATE;
- FROM Libraries IMPORT OpenLibrary, CloseLibrary;
- FROM Intuition IMPORT IntuitionName, IntuitionBase, Window, WindowFlags,
- IDCMPFlagSet, WindowFlagSet, IntuiMessagePtr,
- CustomScreen, ScreenFlags, Screen, IDCMPFlags,
- ScreenPtr, WindowPtr, NewWindow, IntuitionText,
- MenuEnabled, MenuFlagSet, Menu, MenuItem, ItemFlagSet,
- ItemText, ItemEnabled, Gadget, StringInfo, GadgetFlags,
- GadgetFlagSet, GadgetPtr, BorderPtr, Border,
- IntuitionTextPtr, ActivationFlags, ActivationFlagSet,
- RequesterFlags, RequesterFlagSet;
- FROM Gadgets IMPORT HighComplement, RequestorGadget, StrGadget,
- BoolGadget;
- FROM GraphicsLibrary
- IMPORT GraphicsName, GraphicsBase, DrawingModeSet, Jam1,
- Jam2;
- FROM Screens IMPORT OpenScreen, NewScreen, CloseScreen;
- FROM Colors IMPORT SetRGB4;
- FROM Ports IMPORT MessagePtr;
- FROM Views IMPORT ModeSet;
- FROM Windows IMPORT OpenWindow, CloseWindow;
- FROM Requesters IMPORT InitRequester;
-
- VAR
- StringI : StringInfo;
- StringText,
- GadgetText2 : IntuitionTextPtr;
- AuthorText : ARRAY[0..2] OF IntuitionTextPtr;
- StringGadg,
- AuthorGadg : GadgetPtr;
- AText : ARRAY[0..2], [0..32] OF CHAR;
- OK : ARRAY[0..2] OF CHAR;
- Blah : ARRAY[0..10] OF CHAR;
- AVar,
- GVar,
- XYVar : ARRAY[0..9] OF INTEGER;
- StringBorder,
- AuthorBorder,
- GadgetBorder : BorderPtr;
- AMNewW1,
- AMNewW2 : NewWindow;
- AMNewS : NewScreen;
- ScreenName : ARRAY[0..29] OF CHAR;
- AMItem : ARRAY[0..2] OF MenuItem;
- AMItemText : ARRAY[0..2] OF IntuitionText;
- AMText : ARRAY[0..2] OF ARRAY[0..20] OF CHAR;
- AMMenu : Menu;
- AMMenuName : ARRAY[0..10] OF CHAR;
-
- PROCEDURE InitScreen (VAR s : NewScreen) : ScreenPtr;
- BEGIN
- ScreenName := "Automata V1.0";
- WITH s DO
- LeftEdge := 0; TopEdge := 0;
- Width := 320; Height := 200;
- Depth := 2;
- DetailPen := BYTE(0); BlockPen := BYTE(1);
- ViewModes := CARDINAL (ModeSet {});
- Type := CustomScreen;
- Font := NULL;
- DefaultTitle := ADR(ScreenName);
- Gadgets := NULL;
- CustomBitMap := NULL
- END;
- RETURN OpenScreen (s)
- END InitScreen;
-
- PROCEDURE InitWindow1 (VAR w : NewWindow; s : ScreenPtr) : WindowPtr;
- BEGIN
- WITH w DO
- LeftEdge := 0; TopEdge := 0; Width := 320; Height := 200;
- DetailPen := BYTE (0);
- BlockPen := BYTE (1);
- Title := ADR(ScreenName);
- Flags := WindowFlagSet {Activate, Borderless, BackDrop};
- IDCMPFlags := IDCMPFlagSet {MenuPick, ReqClear};
- Type := CustomScreen;
- CheckMark := NULL;
- FirstGadget := NULL;
- Screen := s;
- BitMap := NULL;
- MinWidth := 10; MinHeight := 10; MaxWidth := 320; MaxHeight := 200;
- END;
- RETURN OpenWindow (w);
- END InitWindow1;
-
- PROCEDURE SetColors(s : ScreenPtr);
- BEGIN
- WITH s^ DO
- SetRGB4 (VPort, 0, 0, 0, 0); (* Black *)
- SetRGB4 (VPort, 1, 15, 0, 0); (* Red *)
- SetRGB4 (VPort, 2, 8, 15, 0); (* Light Green *)
- SetRGB4 (VPort, 3, 6, 1, 15); (* Bright Blue *)
- END;
- END SetColors;
-
- PROCEDURE InitGadg1();
- BEGIN
- NEW(StringReq);
- InitRequester(StringReq^);
- NEW(StringGadg);
- WITH StringGadg^ DO
- NextGadget := NULL;
- LeftEdge := 54;
- TopEdge := 4;
- Width := 80;
- Height := 10;
- Flags := HighComplement + GadgetFlagSet{Selected};
- Activation := ActivationFlagSet{EndGadget};
- GadgetType := (RequestorGadget) + (StrGadget);
- GadgetRender := NULL; SelectRender := NULL;
- GadgetText := NULL; MutualExclude := 0;
- SpecialInfo := ADR(StringI); GadgetID := 0;
- END;
- NewRule := "1234567890";
- OldRule := "1234567890";
- WITH StringI DO
- Buffer := ADR(NewRule);
- UndoBuffer := ADR(OldRule);
- BufferPos := 0;
- MaxChars := 11;
- DispPos :=0;
- END;
- Blah := "Rule:";
- NEW (StringText);
- WITH StringText^ DO
- FrontPen := BYTE(3);
- BackPen := BYTE(2);
- DrawMode := BYTE(DrawingModeSet{Jam2});
- LeftEdge := 14; TopEdge := 4;
- ITextFont := NULL; IText := ADR(Blah);
- NextText := NULL;
- END;
- NEW(StringBorder);
- XYVar[0] := 1;
- XYVar[1] := 1;
- XYVar[2] := 146;
- XYVar[3] := 1;
- XYVar[4] := 146;
- XYVar[5] := 14;
- XYVar[6] := 1;
- XYVar[7] := 14;
- XYVar[8] := 1;
- XYVar[9] := 1;
- WITH StringBorder^ DO
- LeftEdge := 0; TopEdge := 0;
- FrontPen := BYTE(3); BackPen := BYTE(2);
- DrawMode := BYTE(DrawingModeSet{Jam2}); Count := BYTE(5);
- XY := ADR(XYVar);
- NextBorder := NULL;
- END;
- WITH StringReq^ DO
- OlderRequest := NULL;
- LeftEdge := 20;
- TopEdge := 20;
- Width := 148; Height := 16;
- RelLeft := 0; RelTop := 0;
- ReqGadget := StringGadg;
- ReqText := StringText;
- Flags := RequesterFlagSet{};
- BackFill := BYTE(2);
- ReqBorder := StringBorder;
- END;
- END InitGadg1;
-
- PROCEDURE InitGadg2();
- VAR
- I : CARDINAL;
- BEGIN
- NEW(AuthorReq);
- InitRequester(AuthorReq^);
- NEW(AuthorGadg);
- NEW(GadgetText2);
- NEW(GadgetBorder);
- WITH AuthorGadg^ DO
- NextGadget := NULL;
- LeftEdge := 190;
- TopEdge := 55;
- Width := 40;
- Height := 20;
- Flags := HighComplement;
- Activation := ActivationFlagSet{EndGadget, RelVerify};
- GadgetType := (RequestorGadget) + (BoolGadget);
- GadgetRender := GadgetBorder;
- SelectRender := NULL;
- GadgetText := GadgetText2; MutualExclude := 0;
- SpecialInfo := NULL; GadgetID := 0;
- END;
- OK := "OK";
- WITH GadgetText2^ DO
- FrontPen := BYTE(1);
- BackPen := BYTE(2);
- DrawMode := BYTE(DrawingModeSet{Jam2});
- LeftEdge := 12; TopEdge := 6;
- ITextFont := NULL; IText := ADR(OK);
- NextText := NULL;
- END;
- NEW(AuthorBorder);
- GVar[0] := 0; GVar[1] := 0;
- GVar[2] := 39; GVar[3] := 0;
- GVar[4] := 39; GVar[5] := 19;
- GVar[6] := 0; GVar[7] := 19;
- GVar[8] := 0; GVar[9] := 0;
- AVar[0] := 1; AVar[1] := 1;
- AVar[2] := 238; AVar[3] := 1;
- AVar[4] := 238; AVar[5] := 78;
- AVar[6] := 1; AVar[7] := 78;
- AVar[8] := 1; AVar[9] := 1;
- WITH GadgetBorder^ DO
- LeftEdge := 0; TopEdge := 0;
- FrontPen := BYTE(1); BackPen := BYTE(2);
- DrawMode := BYTE(DrawingModeSet{Jam2}); Count := BYTE(5);
- XY := ADR(GVar);
- NextBorder := NULL;
- END;
- WITH AuthorBorder^ DO
- LeftEdge := 0; TopEdge := 0;
- FrontPen := BYTE(3); BackPen := BYTE(2);
- DrawMode := BYTE(DrawingModeSet{Jam2}); Count := BYTE(5);
- XY := ADR(AVar);
- NextBorder := NULL;
- END;
- AText[0] := "Automata V1.0 by Mike Dryja";
- AText[1] := "(C) 1987 A MAD-Ware Product";
- AText[2] := " Free to copy, not to sell!";
- FOR I := 2 TO 0 BY -1 DO
- NEW(AuthorText[I]);
- WITH AuthorText[I]^ DO
- LeftEdge := 8;
- FrontPen := BYTE(3); BackPen := BYTE(2);
- DrawMode := BYTE(DrawingModeSet{Jam2});
- ITextFont := NULL; IText := ADR(AText[I]);
- IF I<2 THEN
- NextText := AuthorText[I+1]
- ELSE
- NextText := NULL
- END;
- END;
- END;
- AuthorText[0]^.TopEdge := 5; AuthorText[1]^.TopEdge := 25;
- AuthorText[2]^.TopEdge := 35;
- WITH AuthorReq^ DO
- OlderRequest := NULL;
- LeftEdge := 20;
- TopEdge := 20;
- Width := 240; Height := 80;
- RelLeft := 0; RelTop := 0;
- ReqGadget := AuthorGadg;
- ReqText := AuthorText[0];
- Flags := RequesterFlagSet{};
- BackFill := BYTE(2);
- ReqBorder := AuthorBorder;
- END;
- END InitGadg2;
-
- PROCEDURE PrepareScreen() : BOOLEAN;
- BEGIN
- IntuitionBase := OpenLibrary (IntuitionName,0);
- IF IntuitionBase # 0 THEN
- AMScreen := InitScreen(AMNewS);
- AMWindow := InitWindow1(AMNewW1, AMScreen);
- GraphicsBase := OpenLibrary (GraphicsName,0);
- IF GraphicsBase # 0 THEN
- SetColors(AMScreen);
- InitGadg1();
- InitGadg2();
- RETURN TRUE;
- ELSE
- RETURN FALSE
- END;
- ELSE
- RETURN FALSE
- END;
- END PrepareScreen;
-
- PROCEDURE CloseSetUp ();
- BEGIN
- CloseWindow (AMWindow^);
- CloseScreen (AMScreen^);
- CloseLibrary (IntuitionBase);
- END CloseSetUp;
-
- END AMSetUp.
-
-
-
-